<!DOCTYPE html> 
<html>
<head>
<title>Skyline75489</title>
<meta charset='utf-8'>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<link rel="stylesheet" href="../static/styles/github.css">
<link rel="stylesheet" href="../static/post.css">
</head>
<body>

<div class="wrapper">
<div class="header">
	<span class="blog-name">Skyline75489</span>

<a class="nav" href="../index.html">Home</a>
<a class="nav" href="about.html">About</a>
</div>
<div class="content">

<h1>使用 RVM 安装多个版本的 Ruby 以及 CocoaPods</h1>
<p>因为工作原因，需要使用旧版本的 CocoaPods。而想使用 Swift 的话，又必须要用 0.38 以上版本的 CocoaPods 。为了能同时使用两个版本的 CocoaPods 而不产生冲突，可以使用 rvm 再安装一个 ruby，这样就可以在系统 ruby 里安装一个 CocoaPods，在 rvm 的 ruby 里安装另一个版本，这样就可以使用 rvm 切换 ruby 版本来无缝切换两个版本的 CocoaPods 了。</p>
<h3>安装 rvm</h3>
<p>安装 rvm 相对来说比较简单，官方提供了一个脚本可以直接安装</p>
<pre><code class="lang-no-highlight">curl -sSL https://get.rvm.io | bash -s stable
</code></pre>
<p>但是 <code>rvm.io</code> 这个网站有被墙的感觉，如果发现这个脚本执行半天还没反应，估计就是网络环境的问题了。可以科学上网之后把这个脚本下载下来，然后再执行。</p>
<h3>安装 ruby</h3>
<p>安装 ruby 本来也应该比较简单，只需要执行一个命令:</p>
<pre><code class="lang-no-highlight">rvm install 2.2.3
</code></pre>
<p>但是执行过程中却出现了：</p>
<pre><code class="lang-no-highlight">Searching for binary rubies, this might take some time.
No binary rubies available for: osx/10.10/x86_64/ruby-2.2.1.
Continuing with compilation. Please read &#39;rvm help mount&#39; to get more information on binary rubies.
</code></pre>
<p>看这意思是没有找到二进制的包，要是自己下源码编译的话，恐怕要花挺长时间了。为什么它找不到二进制的包呢？在网上查了一下资料，知道 rvm 是在 <code>~/.rvm/config/remote</code> 中找二进制包的，打开这个文件，里面的内容类似这样：</p>
<pre><code class="lang-no-highlight">https://rvm_io.global.ssl.fastly.net/binaries/amazon/2013.03/x86_64/ruby-1.9.3-p448.tar.bz2
https://rvm_io.global.ssl.fastly.net/binaries/amazon/2013.03/x86_64/ruby-2.0.0-p247.tar.bz2
https://rvm_io.global.ssl.fastly.net/binaries/arch/libc-2.15/x86_64/ruby-1.9.3-p194.tar.bz2
https://rvm_io.global.ssl.fastly.net/binaries/arch/libc-2.15/x86_64/ruby-1.9.3-p286.tar.bz2
https://rvm_io.global.ssl.fastly.net/binaries/arch/libc-2.15/x86_64/ruby-1.9.3-p327.tar.bz2
</code></pre>
<p>一看 fastly 就秒懂了，这些地址也是被墙了，导致 rvm 找不到二进制包。</p>
<p>能不能安装本地的包呢？也是可以的，答案就在上面提示的 <code>rvm mount</code> 命令中。我们可以先把二进制包下载到本地，然后通过 <code>rvm mount</code> 命令安装。</p>
<p>首先用科学上网的方法把二进制包下载下来（除了上面的地址，还可以去 <a href="https://rvm.io/binaries/">https://rvm.io/binaries/</a> ），然后使用</p>
<pre><code class="lang-no-highlight">rvm mount ~/Downloads/ruby-2.2.3.tar.bz2
</code></pre>
<p>这样就可以安装成功了。更多关于 mount 命令的使用，可以参考<a href="http://syntaxi.net/2012/12/21/installing-binaries-in-rvm/">这篇英文博客</a></p>
<h3>切换 ruby 版本</h3>
<p>上面的步骤完成之后，就可以通过 rvm 来切换 ruby 版本了：</p>
<pre><code class="lang-bash">rvm use system # 使用系统 ruby
rvm use 2.2.3  # 使用 rvm ruby
</code></pre>
<p>在切换 ruby 版本之后，gem 也会跟着切换，我们就可以安装两个版本的 CocoaPods 了。</p>


</div>
</div>
<script src="../static/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</body>

</html>
